↳ ITRS
↳ ITRStoIDPProof
z
if_3(pair(yl, yh), x, ys) → app(qsort(yl), cons(x, qsort(yh)))
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(>@z(x, y), zl, zh, x, y, zs)
qsort(ins(x, ys)) → if_3(split(x, ys), x, ys)
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(>=@z(y, x), zl, zh, x, y, zs)
Cond_if_2(TRUE, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
app(cons(x, ys), zs) → cons(x, app(ys, zs))
split(x, e) → pair(e, e)
Cond_if_1(TRUE, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
Cond_split(TRUE, x, y, zs) → if_1(split(x, zs), x, y, zs)
split(x, ins(y, zs)) → Cond_split1(>=@z(y, x), x, y, zs)
Cond_split1(TRUE, x, y, zs) → if_2(split(x, zs), x, y, zs)
qsort(e) → nil
app(nil, zs) → zs
split(x, ins(y, zs)) → Cond_split(>@z(x, y), x, y, zs)
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
z
if_3(pair(yl, yh), x, ys) → app(qsort(yl), cons(x, qsort(yh)))
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(>@z(x, y), zl, zh, x, y, zs)
qsort(ins(x, ys)) → if_3(split(x, ys), x, ys)
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(>=@z(y, x), zl, zh, x, y, zs)
Cond_if_2(TRUE, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
app(cons(x, ys), zs) → cons(x, app(ys, zs))
split(x, e) → pair(e, e)
Cond_if_1(TRUE, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
Cond_split(TRUE, x, y, zs) → if_1(split(x, zs), x, y, zs)
split(x, ins(y, zs)) → Cond_split1(>=@z(y, x), x, y, zs)
Cond_split1(TRUE, x, y, zs) → if_2(split(x, zs), x, y, zs)
qsort(e) → nil
app(nil, zs) → zs
split(x, ins(y, zs)) → Cond_split(>@z(x, y), x, y, zs)
(0) -> (3), if ((x[0] →* x[3])∧(ys[0] →* ys[3])∧(split(x[0], ys[0]) →* pair(yl[3], yh[3])))
(0) -> (8), if ((x[0] →* x[8])∧(ys[0] →* ys[8])∧(split(x[0], ys[0]) →* pair(yl[8], yh[8])))
(0) -> (11), if ((x[0] →* x[11])∧(ys[0] →* ys[11])∧(split(x[0], ys[0]) →* pair(yl[11], yh[11])))
(1) -> (2), if ((zs[1] →* ins(y[2], zs[2]))∧(x[1] →* x[2]))
(1) -> (7), if ((zs[1] →* ins(y[7], zs[7]))∧(x[1] →* x[7]))
(2) -> (1), if ((zs[2] →* zs[1])∧(x[2] →* x[1])∧(y[2] →* y[1])∧(>@z(x[2], y[2]) →* TRUE))
(2) -> (10), if ((zs[2] →* zs[10])∧(x[2] →* x[10])∧(y[2] →* y[10])∧(>@z(x[2], y[2]) →* TRUE))
(3) -> (9), if ((qsort(yl[3]) →* cons(x[9], ys[9])))
(5) -> (2), if ((ys[5] →* ins(y[2], zs[2]))∧(x[5] →* x[2]))
(5) -> (7), if ((ys[5] →* ins(y[7], zs[7]))∧(x[5] →* x[7]))
(7) -> (12), if ((zs[7] →* zs[12])∧(x[7] →* x[12])∧(y[7] →* y[12])∧(>=@z(y[7], x[7]) →* TRUE))
(7) -> (13), if ((zs[7] →* zs[13])∧(x[7] →* x[13])∧(y[7] →* y[13])∧(>=@z(y[7], x[7]) →* TRUE))
(8) -> (0), if ((yh[8] →* ins(x[0], ys[0])))
(8) -> (5), if ((yh[8] →* ins(x[5], ys[5])))
(9) -> (9), if ((zs[9] →* zs[9]a)∧(ys[9] →* cons(x[9]a, ys[9]a)))
(10) -> (6), if ((zs[10] →* zs[6])∧(x[10] →* x[6])∧(y[10] →* y[6])∧(split(x[10], zs[10]) →* pair(zl[6], zh[6])))
(11) -> (0), if ((yl[11] →* ins(x[0], ys[0])))
(11) -> (5), if ((yl[11] →* ins(x[5], ys[5])))
(12) -> (2), if ((zs[12] →* ins(y[2], zs[2]))∧(x[12] →* x[2]))
(12) -> (7), if ((zs[12] →* ins(y[7], zs[7]))∧(x[12] →* x[7]))
(13) -> (4), if ((zs[13] →* zs[4])∧(x[13] →* x[4])∧(y[13] →* y[4])∧(split(x[13], zs[13]) →* pair(zl[4], zh[4])))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDP
z
if_3(pair(yl, yh), x, ys) → app(qsort(yl), cons(x, qsort(yh)))
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(>@z(x, y), zl, zh, x, y, zs)
qsort(ins(x, ys)) → if_3(split(x, ys), x, ys)
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(>=@z(y, x), zl, zh, x, y, zs)
Cond_if_2(TRUE, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
app(cons(x, ys), zs) → cons(x, app(ys, zs))
split(x, e) → pair(e, e)
Cond_if_1(TRUE, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
Cond_split(TRUE, x, y, zs) → if_1(split(x, zs), x, y, zs)
split(x, ins(y, zs)) → Cond_split1(>=@z(y, x), x, y, zs)
Cond_split1(TRUE, x, y, zs) → if_2(split(x, zs), x, y, zs)
qsort(e) → nil
app(nil, zs) → zs
split(x, ins(y, zs)) → Cond_split(>@z(x, y), x, y, zs)
(2) -> (1), if ((zs[2] →* zs[1])∧(x[2] →* x[1])∧(y[2] →* y[1])∧(>@z(x[2], y[2]) →* TRUE))
(12) -> (2), if ((zs[12] →* ins(y[2], zs[2]))∧(x[12] →* x[2]))
(12) -> (7), if ((zs[12] →* ins(y[7], zs[7]))∧(x[12] →* x[7]))
(1) -> (2), if ((zs[1] →* ins(y[2], zs[2]))∧(x[1] →* x[2]))
(1) -> (7), if ((zs[1] →* ins(y[7], zs[7]))∧(x[1] →* x[7]))
(7) -> (12), if ((zs[7] →* zs[12])∧(x[7] →* x[12])∧(y[7] →* y[12])∧(>=@z(y[7], x[7]) →* TRUE))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDP
z
(2) -> (1), if ((zs[2] →* zs[1])∧(x[2] →* x[1])∧(y[2] →* y[1])∧(>@z(x[2], y[2]) →* TRUE))
(12) -> (2), if ((zs[12] →* ins(y[2], zs[2]))∧(x[12] →* x[2]))
(12) -> (7), if ((zs[12] →* ins(y[7], zs[7]))∧(x[12] →* x[7]))
(1) -> (2), if ((zs[1] →* ins(y[2], zs[2]))∧(x[1] →* x[2]))
(1) -> (7), if ((zs[1] →* ins(y[7], zs[7]))∧(x[1] →* x[7]))
(7) -> (12), if ((zs[7] →* zs[12])∧(x[7] →* x[12])∧(y[7] →* y[12])∧(>=@z(y[7], x[7]) →* TRUE))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
(1) (y[2]=y[1]∧>@z(x[2], y[2])=TRUE∧x[2]=x[1]∧x[1]=x[2]1∧zs[2]=zs[1]∧zs[1]=ins(y[2]1, zs[2]1) ⇒ COND_SPLIT(TRUE, x[1], y[1], zs[1])≥SPLIT(x[1], zs[1])∧(UIncreasing(SPLIT(x[1], zs[1])), ≥))
(2) (>@z(x[2], y[2])=TRUE ⇒ COND_SPLIT(TRUE, x[2], y[2], ins(y[2]1, zs[2]1))≥SPLIT(x[2], ins(y[2]1, zs[2]1))∧(UIncreasing(SPLIT(x[1], zs[1])), ≥))
(3) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 ≥ 0)
(4) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 ≥ 0)
(5) (0 ≥ 0 ⇒ 0 ≥ 0∧(UIncreasing(SPLIT(x[1], zs[1])), ≥))
(6) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0)
(7) (y[2]=y[1]∧>@z(x[2], y[2])=TRUE∧zs[1]=ins(y[7], zs[7])∧x[2]=x[1]∧zs[2]=zs[1]∧x[1]=x[7] ⇒ COND_SPLIT(TRUE, x[1], y[1], zs[1])≥SPLIT(x[1], zs[1])∧(UIncreasing(SPLIT(x[1], zs[1])), ≥))
(8) (>@z(x[2], y[2])=TRUE ⇒ COND_SPLIT(TRUE, x[2], y[2], ins(y[7], zs[7]))≥SPLIT(x[2], ins(y[7], zs[7]))∧(UIncreasing(SPLIT(x[1], zs[1])), ≥))
(9) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 ≥ 0)
(10) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 ≥ 0)
(11) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 ≥ 0)
(12) (0 ≥ 0 ⇒ 0 = 0∧(UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0)
(13) (>@z(x[2], y[2])=TRUE∧x[1]=x[2]∧x[2]=x[1]1∧zs[1]=ins(y[2], zs[2])∧y[2]=y[1]1∧zs[2]=zs[1]1 ⇒ SPLIT(x[2], ins(y[2], zs[2]))≥COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥))
(14) (>@z(x[2], y[2])=TRUE ⇒ SPLIT(x[2], ins(y[2], zs[2]))≥COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥))
(15) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧1 ≥ 0)
(16) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧1 ≥ 0)
(17) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧1 ≥ 0)
(18) (0 ≥ 0 ⇒ 1 ≥ 0∧0 = 0∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧0 = 0∧0 = 0)
(19) (y[2]=y[1]∧>@z(x[2], y[2])=TRUE∧x[12]=x[2]∧x[2]=x[1]∧zs[2]=zs[1]∧zs[12]=ins(y[2], zs[2]) ⇒ SPLIT(x[2], ins(y[2], zs[2]))≥COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥))
(20) (>@z(x[2], y[2])=TRUE ⇒ SPLIT(x[2], ins(y[2], zs[2]))≥COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥))
(21) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧1 ≥ 0)
(22) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧1 ≥ 0)
(23) (0 ≥ 0 ⇒ 1 ≥ 0∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥))
(24) (0 ≥ 0 ⇒ 0 = 0∧1 ≥ 0∧0 = 0∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧0 = 0)
(25) (>=@z(y[7], x[7])=TRUE∧zs[7]=zs[12]∧zs[12]=ins(y[7]1, zs[7]1)∧x[7]=x[12]∧y[7]=y[12]∧x[12]=x[7]1 ⇒ COND_SPLIT1(TRUE, x[12], y[12], zs[12])≥SPLIT(x[12], zs[12])∧(UIncreasing(SPLIT(x[12], zs[12])), ≥))
(26) (>=@z(y[7], x[7])=TRUE ⇒ COND_SPLIT1(TRUE, x[7], y[7], ins(y[7]1, zs[7]1))≥SPLIT(x[7], ins(y[7]1, zs[7]1))∧(UIncreasing(SPLIT(x[12], zs[12])), ≥))
(27) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[12], zs[12])), ≥)∧0 ≥ 0)
(28) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[12], zs[12])), ≥)∧0 ≥ 0)
(29) (0 ≥ 0 ⇒ 0 ≥ 0∧(UIncreasing(SPLIT(x[12], zs[12])), ≥))
(30) (0 ≥ 0 ⇒ 0 ≥ 0∧0 = 0∧0 = 0∧0 = 0∧(UIncreasing(SPLIT(x[12], zs[12])), ≥)∧0 = 0)
(31) (>=@z(y[7], x[7])=TRUE∧zs[7]=zs[12]∧x[12]=x[2]∧x[7]=x[12]∧y[7]=y[12]∧zs[12]=ins(y[2], zs[2]) ⇒ COND_SPLIT1(TRUE, x[12], y[12], zs[12])≥SPLIT(x[12], zs[12])∧(UIncreasing(SPLIT(x[12], zs[12])), ≥))
(32) (>=@z(y[7], x[7])=TRUE ⇒ COND_SPLIT1(TRUE, x[7], y[7], ins(y[2], zs[2]))≥SPLIT(x[7], ins(y[2], zs[2]))∧(UIncreasing(SPLIT(x[12], zs[12])), ≥))
(33) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[12], zs[12])), ≥)∧0 ≥ 0)
(34) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[12], zs[12])), ≥)∧0 ≥ 0)
(35) (0 ≥ 0 ⇒ 0 ≥ 0∧(UIncreasing(SPLIT(x[12], zs[12])), ≥))
(36) (0 ≥ 0 ⇒ 0 ≥ 0∧0 = 0∧0 = 0∧0 = 0∧(UIncreasing(SPLIT(x[12], zs[12])), ≥)∧0 = 0)
(37) (>=@z(y[7], x[7])=TRUE∧zs[1]=ins(y[7], zs[7])∧zs[7]=zs[12]∧x[7]=x[12]∧y[7]=y[12]∧x[1]=x[7] ⇒ SPLIT(x[7], ins(y[7], zs[7]))≥COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])∧(UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥))
(38) (>=@z(y[7], x[7])=TRUE ⇒ SPLIT(x[7], ins(y[7], zs[7]))≥COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])∧(UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥))
(39) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥)∧0 ≥ 0)
(40) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥)∧0 ≥ 0)
(41) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥)∧0 ≥ 0)
(42) (0 ≥ 0 ⇒ 0 ≥ 0∧0 = 0∧0 = 0∧(UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥)∧0 = 0)
(43) (>=@z(y[7], x[7])=TRUE∧zs[7]=zs[12]1∧x[7]=x[12]1∧x[12]=x[7]∧y[7]=y[12]1∧zs[12]=ins(y[7], zs[7]) ⇒ SPLIT(x[7], ins(y[7], zs[7]))≥COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])∧(UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥))
(44) (>=@z(y[7], x[7])=TRUE ⇒ SPLIT(x[7], ins(y[7], zs[7]))≥COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])∧(UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥))
(45) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥)∧0 ≥ 0)
(46) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥)∧0 ≥ 0)
(47) (0 ≥ 0 ⇒ 0 ≥ 0∧(UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥))
(48) (0 ≥ 0 ⇒ 0 = 0∧0 = 0∧(UIncreasing(COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])), ≥)∧0 ≥ 0∧0 = 0)
POL(>=@z(x1, x2)) = 0
POL(ins(x1, x2)) = 1 + x2
POL(COND_SPLIT(x1, x2, x3, x4)) = 1 + x4 + (2)x2
POL(TRUE) = 0
POL(COND_SPLIT1(x1, x2, x3, x4)) = 1 + x4 + (2)x2
POL(FALSE) = 0
POL(SPLIT(x1, x2)) = 1 + x2 + (2)x1
POL(undefined) = 0
POL(>@z(x1, x2)) = 0
SPLIT(x[7], ins(y[7], zs[7])) → COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])
COND_SPLIT(TRUE, x[1], y[1], zs[1]) → SPLIT(x[1], zs[1])
SPLIT(x[2], ins(y[2], zs[2])) → COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])
COND_SPLIT1(TRUE, x[12], y[12], zs[12]) → SPLIT(x[12], zs[12])
SPLIT(x[7], ins(y[7], zs[7])) → COND_SPLIT1(>=@z(y[7], x[7]), x[7], y[7], zs[7])
COND_SPLIT(TRUE, x[1], y[1], zs[1]) → SPLIT(x[1], zs[1])
SPLIT(x[2], ins(y[2], zs[2])) → COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])
COND_SPLIT1(TRUE, x[12], y[12], zs[12]) → SPLIT(x[12], zs[12])
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ AND
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDP
↳ IDP
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ AND
↳ IDP
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDP
z
(2) -> (1), if ((zs[2] →* zs[1])∧(x[2] →* x[1])∧(y[2] →* y[1])∧(>@z(x[2], y[2]) →* TRUE))
(12) -> (2), if ((zs[12] →* ins(y[2], zs[2]))∧(x[12] →* x[2]))
(1) -> (2), if ((zs[1] →* ins(y[2], zs[2]))∧(x[1] →* x[2]))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ AND
↳ IDP
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDP
z
(2) -> (1), if ((zs[2] →* zs[1])∧(x[2] →* x[1])∧(y[2] →* y[1])∧(>@z(x[2], y[2]) →* TRUE))
(1) -> (2), if ((zs[1] →* ins(y[2], zs[2]))∧(x[1] →* x[2]))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
(1) (y[2]=y[1]∧>@z(x[2], y[2])=TRUE∧x[2]=x[1]∧x[1]=x[2]1∧zs[2]=zs[1]∧zs[1]=ins(y[2]1, zs[2]1) ⇒ COND_SPLIT(TRUE, x[1], y[1], zs[1])≥SPLIT(x[1], zs[1])∧(UIncreasing(SPLIT(x[1], zs[1])), ≥))
(2) (>@z(x[2], y[2])=TRUE ⇒ COND_SPLIT(TRUE, x[2], y[2], ins(y[2]1, zs[2]1))≥SPLIT(x[2], ins(y[2]1, zs[2]1))∧(UIncreasing(SPLIT(x[1], zs[1])), ≥))
(3) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 ≥ 0)
(4) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 ≥ 0)
(5) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 ≥ 0)
(6) (0 ≥ 0 ⇒ (UIncreasing(SPLIT(x[1], zs[1])), ≥)∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧0 = 0)
(7) (>@z(x[2], y[2])=TRUE∧x[1]=x[2]∧x[2]=x[1]1∧zs[1]=ins(y[2], zs[2])∧y[2]=y[1]1∧zs[2]=zs[1]1 ⇒ SPLIT(x[2], ins(y[2], zs[2]))≥COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥))
(8) (>@z(x[2], y[2])=TRUE ⇒ SPLIT(x[2], ins(y[2], zs[2]))≥COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥))
(9) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧1 ≥ 0)
(10) (0 ≥ 0 ⇒ (UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧1 ≥ 0)
(11) (0 ≥ 0 ⇒ 1 ≥ 0∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥))
(12) (0 ≥ 0 ⇒ 0 = 0∧1 ≥ 0∧0 = 0∧(UIncreasing(COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])), ≥)∧0 = 0)
POL(ins(x1, x2)) = 2 + x2
POL(COND_SPLIT(x1, x2, x3, x4)) = -1 + x4 + x2
POL(TRUE) = 0
POL(FALSE) = 0
POL(SPLIT(x1, x2)) = -1 + x2 + x1
POL(undefined) = 0
POL(>@z(x1, x2)) = 0
SPLIT(x[2], ins(y[2], zs[2])) → COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])
COND_SPLIT(TRUE, x[1], y[1], zs[1]) → SPLIT(x[1], zs[1])
SPLIT(x[2], ins(y[2], zs[2])) → COND_SPLIT(>@z(x[2], y[2]), x[2], y[2], zs[2])
COND_SPLIT(TRUE, x[1], y[1], zs[1]) → SPLIT(x[1], zs[1])
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ AND
↳ IDP
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDPNonInfProof
↳ AND
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDP
↳ IDP
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ AND
↳ IDP
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDPNonInfProof
↳ AND
↳ IDP
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDP
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
z
if_3(pair(yl, yh), x, ys) → app(qsort(yl), cons(x, qsort(yh)))
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(>@z(x, y), zl, zh, x, y, zs)
qsort(ins(x, ys)) → if_3(split(x, ys), x, ys)
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(>=@z(y, x), zl, zh, x, y, zs)
Cond_if_2(TRUE, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
app(cons(x, ys), zs) → cons(x, app(ys, zs))
split(x, e) → pair(e, e)
Cond_if_1(TRUE, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
Cond_split(TRUE, x, y, zs) → if_1(split(x, zs), x, y, zs)
split(x, ins(y, zs)) → Cond_split1(>=@z(y, x), x, y, zs)
Cond_split1(TRUE, x, y, zs) → if_2(split(x, zs), x, y, zs)
qsort(e) → nil
app(nil, zs) → zs
split(x, ins(y, zs)) → Cond_split(>@z(x, y), x, y, zs)
(9) -> (9), if ((zs[9] →* zs[9]a)∧(ys[9] →* cons(x[9]a, ys[9]a)))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
(9) -> (9), if ((zs[9] →* zs[9]a)∧(ys[9] →* cons(x[9]a, ys[9]a)))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
(1) (zs[9]=zs[9]1∧zs[9]1=zs[9]2∧ys[9]=cons(x[9]1, ys[9]1)∧ys[9]1=cons(x[9]2, ys[9]2) ⇒ APP(cons(x[9]1, ys[9]1), zs[9]1)≥APP(ys[9]1, zs[9]1)∧(UIncreasing(APP(ys[9]1, zs[9]1)), ≥))
(2) (APP(cons(x[9]1, cons(x[9]2, ys[9]2)), zs[9])≥APP(cons(x[9]2, ys[9]2), zs[9])∧(UIncreasing(APP(ys[9]1, zs[9]1)), ≥))
(3) ((UIncreasing(APP(ys[9]1, zs[9]1)), ≥)∧1 ≥ 0)
(4) ((UIncreasing(APP(ys[9]1, zs[9]1)), ≥)∧1 ≥ 0)
(5) (1 ≥ 0∧(UIncreasing(APP(ys[9]1, zs[9]1)), ≥))
(6) ((UIncreasing(APP(ys[9]1, zs[9]1)), ≥)∧0 = 0∧0 = 0∧1 ≥ 0∧0 = 0∧0 = 0)
POL(cons(x1, x2)) = 1 + x2
POL(APP(x1, x2)) = -1 + (-1)x2 + (2)x1
POL(TRUE) = 0
POL(FALSE) = 0
POL(undefined) = 0
APP(cons(x[9], ys[9]), zs[9]) → APP(ys[9], zs[9])
APP(cons(x[9], ys[9]), zs[9]) → APP(ys[9], zs[9])
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDependencyGraphProof
↳ IDP
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
z
if_3(pair(yl, yh), x, ys) → app(qsort(yl), cons(x, qsort(yh)))
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(>@z(x, y), zl, zh, x, y, zs)
qsort(ins(x, ys)) → if_3(split(x, ys), x, ys)
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(>=@z(y, x), zl, zh, x, y, zs)
Cond_if_2(TRUE, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
app(cons(x, ys), zs) → cons(x, app(ys, zs))
split(x, e) → pair(e, e)
Cond_if_1(TRUE, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
Cond_split(TRUE, x, y, zs) → if_1(split(x, zs), x, y, zs)
split(x, ins(y, zs)) → Cond_split1(>=@z(y, x), x, y, zs)
Cond_split1(TRUE, x, y, zs) → if_2(split(x, zs), x, y, zs)
qsort(e) → nil
app(nil, zs) → zs
split(x, ins(y, zs)) → Cond_split(>@z(x, y), x, y, zs)
(11) -> (0), if ((yl[11] →* ins(x[0], ys[0])))
(0) -> (11), if ((x[0] →* x[11])∧(ys[0] →* ys[11])∧(split(x[0], ys[0]) →* pair(yl[11], yh[11])))
(0) -> (8), if ((x[0] →* x[8])∧(ys[0] →* ys[8])∧(split(x[0], ys[0]) →* pair(yl[8], yh[8])))
(8) -> (0), if ((yh[8] →* ins(x[0], ys[0])))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPtoQDPProof
z
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(>@z(x, y), zl, zh, x, y, zs)
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(>=@z(y, x), zl, zh, x, y, zs)
split(x, ins(y, zs)) → Cond_split(>@z(x, y), x, y, zs)
Cond_split(TRUE, x, y, zs) → if_1(split(x, zs), x, y, zs)
split(x, ins(y, zs)) → Cond_split1(>=@z(y, x), x, y, zs)
Cond_split1(TRUE, x, y, zs) → if_2(split(x, zs), x, y, zs)
Cond_if_2(TRUE, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
split(x, e) → pair(e, e)
Cond_if_1(TRUE, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
(11) -> (0), if ((yl[11] →* ins(x[0], ys[0])))
(0) -> (11), if ((x[0] →* x[11])∧(ys[0] →* ys[11])∧(split(x[0], ys[0]) →* pair(yl[11], yh[11])))
(0) -> (8), if ((x[0] →* x[8])∧(ys[0] →* ys[8])∧(split(x[0], ys[0]) →* pair(yl[8], yh[8])))
(8) -> (0), if ((yh[8] →* ins(x[0], ys[0])))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(TRUE, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(TRUE, x0, x1, x2, x3, x4)
Cond_split(TRUE, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(TRUE, x0, x1, x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ QReductionProof
IF_3(pair(yl[8], yh[8]), x[8], ys[8]) → QSORT(yh[8])
IF_3(pair(yl[11], yh[11]), x[11], ys[11]) → QSORT(yl[11])
QSORT(ins(x[0], ys[0])) → IF_3(split(x[0], ys[0]), x[0], ys[0])
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(greater_int(x, y), zl, zh, x, y, zs)
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(greatereq_int(y, x), zl, zh, x, y, zs)
split(x, ins(y, zs)) → Cond_split(greater_int(x, y), x, y, zs)
Cond_split(true, x, y, zs) → if_1(split(x, zs), x, y, zs)
split(x, ins(y, zs)) → Cond_split1(greatereq_int(y, x), x, y, zs)
Cond_split1(true, x, y, zs) → if_2(split(x, zs), x, y, zs)
Cond_if_2(true, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
split(x, e) → pair(e, e)
Cond_if_1(true, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
greatereq_int(pos(x), pos(0)) → true
greatereq_int(neg(0), pos(0)) → true
greatereq_int(neg(0), neg(y)) → true
greatereq_int(pos(x), neg(y)) → true
greatereq_int(pos(0), pos(s(y))) → false
greatereq_int(neg(x), pos(s(y))) → false
greatereq_int(neg(s(x)), pos(0)) → false
greatereq_int(neg(s(x)), neg(0)) → false
greatereq_int(pos(s(x)), pos(s(y))) → greatereq_int(pos(x), pos(y))
greatereq_int(neg(s(x)), neg(s(y))) → greatereq_int(neg(x), neg(y))
if_3(pair(x0, x1), x2, x3)
if_1(pair(x0, x1), x2, x3, x4)
qsort(ins(x0, x1))
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(true, x0, x1, x2, x3, x4)
app(cons(x0, x1), x2)
split(x0, e)
Cond_if_1(true, x0, x1, x2, x3, x4)
Cond_split(true, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(true, x0, x1, x2)
qsort(e)
app(nil, x0)
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))
if_3(pair(x0, x1), x2, x3)
qsort(ins(x0, x1))
app(cons(x0, x1), x2)
qsort(e)
app(nil, x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
IF_3(pair(yl[8], yh[8]), x[8], ys[8]) → QSORT(yh[8])
IF_3(pair(yl[11], yh[11]), x[11], ys[11]) → QSORT(yl[11])
QSORT(ins(x[0], ys[0])) → IF_3(split(x[0], ys[0]), x[0], ys[0])
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(greater_int(x, y), zl, zh, x, y, zs)
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(greatereq_int(y, x), zl, zh, x, y, zs)
split(x, ins(y, zs)) → Cond_split(greater_int(x, y), x, y, zs)
Cond_split(true, x, y, zs) → if_1(split(x, zs), x, y, zs)
split(x, ins(y, zs)) → Cond_split1(greatereq_int(y, x), x, y, zs)
Cond_split1(true, x, y, zs) → if_2(split(x, zs), x, y, zs)
Cond_if_2(true, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
split(x, e) → pair(e, e)
Cond_if_1(true, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
greatereq_int(pos(x), pos(0)) → true
greatereq_int(neg(0), pos(0)) → true
greatereq_int(neg(0), neg(y)) → true
greatereq_int(pos(x), neg(y)) → true
greatereq_int(pos(0), pos(s(y))) → false
greatereq_int(neg(x), pos(s(y))) → false
greatereq_int(neg(s(x)), pos(0)) → false
greatereq_int(neg(s(x)), neg(0)) → false
greatereq_int(pos(s(x)), pos(s(y))) → greatereq_int(pos(x), pos(y))
greatereq_int(neg(s(x)), neg(s(y))) → greatereq_int(neg(x), neg(y))
if_1(pair(x0, x1), x2, x3, x4)
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(true, x0, x1, x2, x3, x4)
split(x0, e)
Cond_if_1(true, x0, x1, x2, x3, x4)
Cond_split(true, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(true, x0, x1, x2)
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
QSORT(ins(x[0], ys[0])) → IF_3(split(x[0], ys[0]), x[0], ys[0])
Used ordering: Polynomial interpretation [POLO]:
IF_3(pair(yl[8], yh[8]), x[8], ys[8]) → QSORT(yh[8])
IF_3(pair(yl[11], yh[11]), x[11], ys[11]) → QSORT(yl[11])
POL(0) = 0
POL(Cond_if_1(x1, x2, x3, x4, x5, x6)) = 1 + x2 + x3
POL(Cond_if_2(x1, x2, x3, x4, x5, x6)) = 1 + x2 + x3
POL(Cond_split(x1, x2, x3, x4)) = 1 + x4
POL(Cond_split1(x1, x2, x3, x4)) = 1 + x4
POL(IF_3(x1, x2, x3)) = x1
POL(QSORT(x1)) = x1
POL(e) = 0
POL(false) = 0
POL(greater_int(x1, x2)) = 0
POL(greatereq_int(x1, x2)) = x2
POL(if_1(x1, x2, x3, x4)) = 1 + x1
POL(if_2(x1, x2, x3, x4)) = 1 + x1
POL(ins(x1, x2)) = 1 + x2
POL(neg(x1)) = x1
POL(pair(x1, x2)) = x1 + x2
POL(pos(x1)) = x1
POL(s(x1)) = 1 + x1
POL(split(x1, x2)) = x2
POL(true) = 0
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(greatereq_int(y, x), zl, zh, x, y, zs)
split(x, ins(y, zs)) → Cond_split(greater_int(x, y), x, y, zs)
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(greater_int(x, y), zl, zh, x, y, zs)
split(x, ins(y, zs)) → Cond_split1(greatereq_int(y, x), x, y, zs)
Cond_split(true, x, y, zs) → if_1(split(x, zs), x, y, zs)
Cond_if_2(true, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
Cond_split1(true, x, y, zs) → if_2(split(x, zs), x, y, zs)
Cond_if_1(true, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
split(x, e) → pair(e, e)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
IF_3(pair(yl[8], yh[8]), x[8], ys[8]) → QSORT(yh[8])
IF_3(pair(yl[11], yh[11]), x[11], ys[11]) → QSORT(yl[11])
if_1(pair(zl, zh), x, y, zs) → Cond_if_1(greater_int(x, y), zl, zh, x, y, zs)
if_2(pair(zl, zh), x, y, zs) → Cond_if_2(greatereq_int(y, x), zl, zh, x, y, zs)
split(x, ins(y, zs)) → Cond_split(greater_int(x, y), x, y, zs)
Cond_split(true, x, y, zs) → if_1(split(x, zs), x, y, zs)
split(x, ins(y, zs)) → Cond_split1(greatereq_int(y, x), x, y, zs)
Cond_split1(true, x, y, zs) → if_2(split(x, zs), x, y, zs)
Cond_if_2(true, zl, zh, x, y, zs) → pair(zl, ins(y, zh))
split(x, e) → pair(e, e)
Cond_if_1(true, zl, zh, x, y, zs) → pair(ins(y, zl), zh)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
greatereq_int(pos(x), pos(0)) → true
greatereq_int(neg(0), pos(0)) → true
greatereq_int(neg(0), neg(y)) → true
greatereq_int(pos(x), neg(y)) → true
greatereq_int(pos(0), pos(s(y))) → false
greatereq_int(neg(x), pos(s(y))) → false
greatereq_int(neg(s(x)), pos(0)) → false
greatereq_int(neg(s(x)), neg(0)) → false
greatereq_int(pos(s(x)), pos(s(y))) → greatereq_int(pos(x), pos(y))
greatereq_int(neg(s(x)), neg(s(y))) → greatereq_int(neg(x), neg(y))
if_1(pair(x0, x1), x2, x3, x4)
if_2(pair(x0, x1), x2, x3, x4)
Cond_if_2(true, x0, x1, x2, x3, x4)
split(x0, e)
Cond_if_1(true, x0, x1, x2, x3, x4)
Cond_split(true, x0, x1, x2)
split(x0, ins(x1, x2))
Cond_split1(true, x0, x1, x2)
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))